let timeout = null;

import $moment_zone from 'moment-timezone';

export default {
  /**
   * UTC时间解析
   * @param {Object} time	时间
   */
  uctTimeFileter(time, format) {
    return $moment_zone.utc(time).tz($moment_zone.tz.guess()).format(format || "YYYY-MM-DD HH:mm:ss");
  },
  /*
	 * 合并数组
	 */
  SplitArray(list, sp) {
    if (typeof list != 'object') return [];
    if (sp === undefined) sp = [];
    for (var i = 0; i < list.length; i++) {
      sp.push(list[i]);
    }
    return sp;
  },
  /**
   * * 决JavaScript split方法出现空字符的问题
   * @param {Object} val 值 类型：字符串
   * @param {Object} key 分隔符
   */
  splitArray(val, key) {
    return val.split(key).filter(item => item != '');
  },
  /**
   * 解决空字符串
   * @param backUrlCRshlcICwGdGY
   * @returns {string}
   */
  trim(backUrlCRshlcICwGdGY) {
    return String.prototype.trim.call(backUrlCRshlcICwGdGY);
  },
  /**
   * 数组分割
   * 分割成指定的数组个数
   * @param {Object} arr 数组
   * @param {Object} num 个数
   */
  spArr: function(arr, num) { //arr是你要分割的数组，num是以几个为一组
    let newArr = [];
    for (let i = 0; i < arr.length;) {
      newArr.push(arr.slice(i, i += num));
    };
    return newArr;
  },
  /**
   * 移除数组中的某个数组并组成新的数组返回
   * @param array array 需要移除的数组
   * @param int index 需要移除的数组的键值
   * @param string | int 值
   * @return array
   *
   */
  ArrayRemove: function(array, index, value) {
    const valueArray = [];
    if (array instanceof Array) {
      for (let i = 0; i < array.length; i++) {
        if (typeof index == 'number' && array[index] != i) {
          valueArray.push(array[i]);
        } else if (typeof index == 'string' && array[i][index] != value) {
          valueArray.push(array[i]);
        }
      }
    }
    return valueArray;
  },
  /**
   * 防抖原理：一定时间内，只有最后一次操作，再过wait毫秒后才执行函数
   * @param func  要执行的回调函数
   * @param wait  延时的时间
   * @param immediate 是否立即执行
   */
  debounce(func, wait = 500, immediate = false) {
    if (timeout !== null) clearTimeout(timeout);
    if (immediate) {
      let callNow = !timeout;
      timeout = setTimeout(function() {
        timeout = null;
      }, wait);
      if (callNow) typeof func === 'function' && func();
    } else {
      timeout = setTimeout(function() {
        typeof func === 'function' && func();
      }, wait);
    }
  }
}
